package com.ljf.common.domain.repository.service;

import com.ljf.common.dto.query.PageParam;
import com.ljf.common.exception.ServiceException;

import java.io.Serializable;

/**
 * 基础数据访问接口定义--查询部分--单数据查询
 *
 * @author LJF
 * @since 2024-06-21
 */
public interface ISelectOneService<V extends Serializable, Q extends PageParam> {

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    V selectById(Long id) throws ServiceException;

    /**
     * 根据条件查询唯一记录
     *
     * @param query
     * @return
     * @throws ServiceException
     */
    V selectOne(Q query) throws ServiceException;

    /**
     * 根据条件查询唯一记录
     *
     * @param query
     * @param noRecord
     * @param manyRecord
     * @return
     * @throws ServiceException
     */
    V selectOne(Q query, String noRecord, String manyRecord) throws ServiceException;

}
